Technical Q&A QA1230
Movie Export Components - Supporting a MovieProgressProc


Q: ÉfÅ[É^ÇÉGÉìÉRÅ[ÉhǵǃÉtÉ@ÉCÉãÇ…èëÇ´èoÇ∑ÉÄÅ[ÉrÅ[ÉGÉNÉXÉ|Å[ÉgÉRÉìÉ|Å[ÉlÉìÉgÇ≈çÏãΔǵǃǢNjÇ∑ÅBDZÇÃèàóùÇ…ÇÕè≠ÅXéûä‘ǙǩǩÇÈÇÃÇ≈ÅAÉvÉçÉOÉåÉXÉvÉçÉVÅ[ÉWÉÉÇÉTÉ|Å[ÉgǵÇΩÇ¢ÇΔévǢNjÇ∑ÅBMovieProgressProc DžǬǢǃÇÃãLèqÇéQèΔǵNjǵÇΩÇ™ÅAConvertMovieToFile Ç‚ PutMovieIntoTypedHandle ÇΔǢǡÇΩä÷êîÇìKópǵǃǢÇÈÇæÇØÇÃÇÊǧDžå©Ç¶Ç‹Ç∑ÅBÉGÉNÉXÉ|Å[ÉgÉRÉìÉ|Å[ÉlÉìÉgÇ≈ ProgressProc ÇÉTÉ|Å[ÉgÇ∑ÇÈï˚ñ@ÇÕdžÇËÇ‹Ç∑Ç©ÅH

A: ÉGÉNÉXÉ|Å[ÉgÉRÉìÉ|Å[ÉlÉìÉgÇ≈ÉvÉçÉOÉåÉXÉvÉçÉVÅ[ÉWÉÉÇÉTÉ|Å[ÉgÇ∑ÇÈDZÇΔÇÕÅAÇΔǃLJä»íPÇ≈Ç∑ÅB

DZÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕÅAÉäÉXÉg 1 Ç…é¶Ç∑ÉvÉçÉgÉ^ÉCÉvÇΔìØÇ∂ MovieProgressProc ÇíÒãüǵǃǢNjÇ∑ÅBDZÇÍÇÕÅAÉRÉìÉ|Å[ÉlÉìÉgÇ©ÇÁåƒÇ—èoÇ∑ÉÜÅ[ÉUä÷êîÇ≈Ç∑ÅB

OSErr MyMovieProgressProc(Movie theMovie,
                          short message,
                          short whatOperation,
                          Fixed percentDone,
                          long  refcon);

ÉäÉXÉg 1. ÉAÉvÉäÉPÅ[ÉVÉáÉìÇ≈íËã`Ç≥ÇÍÇÈ MovieProgressProc ÇÃÉvÉçÉgÉ^ÉCÉv

SetProgressProc ÉZÉåÉNÉ^ÇÉTÉ|Å[ÉgǵǃÅAÉGÉNÉXÉ|Å[ÉgÉRÉìÉ|Å[ÉlÉìÉgÇ… SetProgressProc ä÷êîÇëgÇ›çûÇfiïKóvǙdžÇËÇ‹Ç∑ÅBDZÇÍÇ…ÇÊÇËÅAMovieExportSetProgressProc API Ç≈ÉRÉìÉ|Å[ÉlÉìÉgÇåƒÇ—èoÇ∑DZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB

ComponentCall (SetProgressProc)

ÉäÉXÉg 2. SetProgressProc ÉZÉåÉNÉ^ÇÃÉTÉ|Å[Ég

QuickTime ÇÕéüÇ…ÅAProgressProc (MovieProgressUPP) ÇΔ refcon ÇégǡǃÉGÉNÉXÉ|Å[ÉgÉRÉìÉ|Å[ÉlÉìÉgÇåƒÇ—èoǵNjÇ∑ÅBå„Ç≈égǶÇÈÇÊǧDžÅADZÇà MovieProgressUPP ÇΔ refcon ÇÉRÉìÉ|Å[ÉlÉìÉgÇà globals Ç…ï€ë∂ǵNjÇ∑ÅB

pascal ComponentResult MyExport_SetProgressProc(
                                myExportGlobals  glob,
                                MovieProgressUPP proc,
                                long             refcon)
{
    if ((NULL == proc) || (-1 == proc)) return paramErr;

    glob->progressProc = proc;
    glob->progressProcRefCon = refCon;

    return noErr;
}

ÉäÉXÉg 3. ÉGÉNÉXÉ|Å[ÉgÉRÉìÉ|Å[ÉlÉìÉg SetProgressProc ÇÃé¿ëï

ÉGÉNÉXÉ|Å[ÉgíÜÇ…ÅiÉRÉìÉ|Å[ÉlÉìÉgǙDZÇÃèàóùÇé¿çsǵǃǢÇÈÇΔÇ´Ç…ÅjÅAInvokeMovieProgressUPP ÇégópǵǃÉvÉçÉOÉåÉXÉvÉçÉVÅ[ÉWÉÉÇåƒÇ—èoǵÅAêiíªÇé¶Ç∑ìKêÿÇ»ÉÅÉbÉZÅ[ÉWÇΔÅAç≈êVÇÃÉpÅ[ÉZÉìÉeÅ[ÉWÇÃílÇ™ï\é¶Ç≥ÇÍÇÈDZÇΔÇämîFǵNjÇ∑ÅB

message ÉpÉâÉÅÅ[É^ÇÕÅAéüÇÃÇ¢Ç∏ÇÍÇ©ÇÃílÇ…ê›íËÇ∑ÇÈïKóvǙdžÇËÇ‹Ç∑ÅB

  • movieProgressOpenÅ|ÉGÉNÉXÉ|Å[É^Ç™í∑Ç¢èàóùÇäJénǵǃǢNjÇ∑ÅBDZÇÍÇ™èÌÇ…ïKÇ∏ç≈èâÇÃÉÅÉbÉZÅ[ÉWÇ…Ç»ÇËÇ‹Ç∑ÅB
  • movieProgressUpdatePercentÅ|èàóùÇÃëäëŒìIÇ»äÆóπìxçáÅB
  • movieProgressCloseÅ|ÉGÉNÉXÉ|Å[ÉgèàóùÇ™äÆóπǵNjǵÇΩÅBDZÇÍÇ™ïKÇ∏ç≈å„ÇÃÉÅÉbÉZÅ[ÉWÇ…Ç»ÇËÇ‹Ç∑ÅB

whatOperation ÉpÉâÉÅÅ[É^ÇÕÅAÉGÉNÉXÉ|Å[ÉgèàóùÇîΩâfÇ∑ÇÈÇÊǧDžê›íËÇ∑ÇÈïKóvǙdžÇËÇ‹Ç∑ÅB

  • progressOpExportMovieÅ|ÉGÉNÉXÉ|Å[ÉgèàóùÅB
InvokeMovieProgressUPP(
        NULL,                  // ÉÄÅ[ÉrÅ[
        movieProgress...,      // movieProgressOpenÅA
                               // movieProgressUpdatePercentÅA
                               // Ç‹ÇΩÇÕ movieProgressClose
        progressOpExportMovie, // ÉGÉNÉXÉ|Å[Ég
        myPercentDone,         // å≈íËíl 1.0 ÇÕÅA100% èàóùäÆóπ
        store->progressProcRefCon,
        glob->progressProc);

ÉäÉXÉg 4. ÉGÉNÉXÉ|Å[ÉgÉRÉìÉ|Å[ÉlÉìÉgÇ©ÇÁÇà MovieProgressProc åƒÇ—èoǵ

ÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃÉfÉxÉçÉbÉpÇÕÅA-1 ÇÃÅuDefault Progress ProcÅvílÇ MovieExportSetProgressProc Ç≈égópÇ≈ǴǻǢDZÇΔÇ…íçà”Ç∑ÇÈïKóvǙdžÇËÇ‹Ç∑ÅBDZÇà API Ç…ÇÕÅAä÷êîÇê≥ǵÇ≠åƒÇ—ñflÇ∑DZÇΔÇ™ïKóvÇ≈Ç∑ÅB

éQçlï∂å£ÅF


[2003 îN 1 åé 31 ì˙]